﻿#include "QCefConfig.h"

//////////////////////////////////////////////////////////////////////////
//
QCefConfig* QCefConfig::ms_instance = nullptr;


//////////////////////////////////////////////////////////////////////////
//
QCefConfig::QCefConfig()
{
    QCEF_DEBUG();

    init();

    //保存第一个实例
    if (ms_instance == nullptr)
    {
        ms_instance = this;
    }
}

QCefConfig::~QCefConfig()
{
    QCEF_DEBUG();

    //
    if (ms_instance == this)
    {
        ms_instance = nullptr;
    }
}

int QCefConfig::init()
{
    QCEF_DEBUG();

    //解决打开新网页时黑屏一闪现象的问题
    addCommandLineSwitchWithValue("disable-gpu-compositing", "1");

    // 禁用GPUCache目录
    addCommandLineSwitch("disable-gpu-shader-disk-cache");
    //addCommandLineSwitch("--disable-software-rasterizer");
    //addCommandLineSwitch("--disable-gpu");

    /*
    // 开启打印预览
    addCommandLineSwitch("enable-print-preview");
    addCommandLineSwitch("allow-silent-push");

    // 关闭同源策略
    addCommandLineSwitch("--disable-web-security");
    addCommandLineSwitch("--allow-file-access-from-files");

    // 开启摄像头
    addCommandLineSwitch("enable-media-stream");
    addCommandLineSwitch("enable-speech-input");
    addCommandLineSwitch("enable-desktop-notifications");

    // 合并渲染进程
    addCommandLineSwitch("process-per-site");
    */

    return 0;
}

void QCefConfig::addCommandLineSwitch(const std::string& key)
{
    m_args[key] = std::string();
}

void QCefConfig::addCommandLineSwitchWithValue(const std::string& key, const std::string& value)
{
    m_args[key] = value;
}

int QCefConfig::delCommandLineSwitch(const std::string& key)
{
    return (int)(m_args.erase(key));
}

void QCefConfig::clearCommandLineSwitch()
{
    m_args.clear();
}
